// 使用 import.meta.glob 导入当前目录下所有 js 模块（排除自身）
const modules = import.meta.glob('./*.js', { eager: true });

// 构建 API 对象，将所有模块的命名导出和默认导出合并
const $api = Object.keys(modules).reduce((acc, modulePath) => {
  // 从路径中提取文件名（不含扩展名）作为键名
  const moduleName = modulePath.replace(/(.*\/)*([^.]+).*/gi, '$2');
  // 避免循环引用
  if (moduleName !== 'index') {
    const module = modules[modulePath];
    // 处理命名导出和默认导出
    if (module.default) {
      // 如果模块有默认导出，则使用默认导出
      acc[moduleName] = module.default;
    } else {
      // 否则将模块作为命名空间导出，支持 $api.user.accountLogin() 调用方式
      acc[moduleName] = module;
    }
  }
  return acc;
}, {});

export default $api;